package bg.btanev.eightyfour.dao;

import java.util.Date;
import java.util.List;

import bg.btanev.eightyfour.domain.Target;
import bg.btanev.eightyfour.shared.analytics.DayActivityStat;
import bg.btanev.eightyfour.shared.analytics.DayHourActivityStat;
import bg.btanev.eightyfour.shared.analytics.HourActivityStat;
import bg.btanev.eightyfour.shared.analytics.MonthActivityStat;
import bg.btanev.eightyfour.shared.analytics.WeekDayActivityStat;
import bg.btanev.eightyfour.shared.analytics.YearActivityStat;

/**
 *
 * @author B.Tanev
 *
 */
public interface AnalyticsDAO {
	/**
	 *
	 * @param target
	 * @param begin
	 *            (optional)
	 * @param end
	 *            (optional)
	 * @return
	 */
	List<DayActivityStat> dayActivityForTarget(Target target, Date begin, Date end);

	/**
	 *
	 * @param target
	 * @param begin
	 *            (optional)
	 * @param end
	 *            (optional)
	 * @return
	 */
	List<DayHourActivityStat> dayHourActivityForTarget(Target target, Date begin, Date end);

	/**
	 *
	 * @param target
	 * @param begin
	 *            (optional)
	 * @param end
	 *            (optional)
	 * @return
	 */
	List<HourActivityStat> hourActivityForTarget(Target target, Date begin, Date end);

	/**
	 *
	 * @param target
	 * @param begin
	 * @param end
	 * @return
	 */
	List<WeekDayActivityStat> weekDayActivityForTarget(Target target, Date begin, Date end);

	/**
	 *
	 * @param target
	 * @param begin
	 *            (optional)
	 * @param end
	 *            (optional)
	 * @return
	 */
	List<MonthActivityStat> monthActivityStat(Target target, Date begin, Date end);

	/**
	 *
	 * @param target
	 * @param begin
	 *            (optional)
	 * @param end
	 *            (optional)
	 * @return
	 */
	List<YearActivityStat> yearActivityStat(Target target, Date begin, Date end);
}
